Index: sys/dev/fxp/if_fxp.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/fxp/if_fxp.c,v
retrieving revision 1.266.2.14
retrieving revision 1.266.2.15
diff -p -I __FBSDID -I $FreeBSD -u -u -r1.266.2.14 -r1.266.2.15
--- sys/dev/fxp/if_fxp.c	9 Feb 2009 04:02:53 -0000	1.266.2.14
+++ sys/dev/fxp/if_fxp.c	7 May 2009 01:14:59 -0000	1.266.2.15
@@ -1486,7 +1486,8 @@ fxp_encap(struct fxp_softc *sc, struct m
 		 * checksum in the first frame driver should compute it.
 		 */
 		ip->ip_sum = 0;
-		ip->ip_len = htons(ifp->if_mtu);
+		ip->ip_len = htons(m->m_pkthdr.tso_segsz + (ip->ip_hl << 2) +
+		    (tcp->th_off << 2));
 		tcp->th_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr,
 		    htons(IPPROTO_TCP + (tcp->th_off << 2) +
 		    m->m_pkthdr.tso_segsz));
